﻿package birdry.display
{
	import flash.display.Graphics;
	
	public class Star extends BaseShape
	{
		/**
		 * 생성자  
		 * @param sides : 별 꼭지점 개수 
		 * @param size : 별의 길이.. %값 ( 큰원에 대한 작은 원의 길이 )
		 * 
		 */				
		public function Star( sides: uint = 5, size: Number = 0.5, radius: Number = 100 )
		{
			super();
			if( sides < 3 ) throw new Error( "sides 개수는 3개보다 많아야 합니다. " );
			
			this._sides 	= sides;
			this._size 	= size;
			this._radius = radius;
			
			this.draw();
		}
		
		private var _radius: Number 	= 100;
		private var _size: Number 		= 0.5;
		private var _sides: Number 		= 5;
				
		override protected function draw(): void
		{
			var g: Graphics = this.graphics;
			g.lineStyle( this.lineThickness, this.lineColor, this.lineAlpha );
			g.beginFill( this.fillColor, this.fillAlpha );
			
			// 변수 선언 및 시작점 설정
			var radian: Number = 0;
			var xPos: Number = this._radius * Math.cos( radian );
			var yPos: Number = this._radius * Math.sin( radian );
			// 시작점으로 이동하기 
			g.moveTo( xPos, yPos );
			// 별 그리기 
			for( var i: int = 0; i < this._sides; i++ )
			{
				// 작은 원으로 직선 연결
				radian += 360 / this._sides * Math.PI / 180 / 2;
				xPos = this._radius * this._size * Math.cos ( radian );
				yPos = this._radius * this._size * Math.sin( radian );
				g.lineTo( xPos, yPos );
				// 큰 원으로 직선 연결....
				radian += 360 / this._sides * Math.PI / 180 / 2;
				xPos = this._radius * Math.cos( radian );
				yPos = this._radius * Math.sin( radian );
				g.lineTo( xPos, yPos );
			}
			
			g.endFill();
		}
		
		
	} // end of class
} // end of package






